/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 23735
 * Date: 2023-01-12
 * Time: 21:42
 */

public class Solution {
//     思路:
//     因为只有一个数出现了一次, 其他的都出现了 三次
//     所以, 其他数(出现3次)的 第i位 之和, 一定为 0或者3
//     所以, 其他所有数的 第i位 之和, 一定为 3的倍数
//     这个数再加上, 答案的第i位, %3 就是答案的第i位
//     同理, 可以求出答案的 每一位, 从而得到答案
    public int singleNumber(int[] nums) {
        int ans=0;
        for(int i=0;i<32;i++){
            int bit=0;
            // 求出 所有数字的 第i位之和
            for(int x:nums){
                bit+=(x>>i)&1;
            }
            // %3 得到答案的 第i位
            bit%=3;
            // 加上去
            ans+=bit<<i;
        }
        return ans;
    }
}
